#pragma once

#include "BasePlayer.h"
#include "BaseLogic.h"

class PokerPlayer : public BasePlayer<PokerPlayer>
{
public:
    PokerPlayer() = default;
    CC_DISALLOW_COPY_AND_ASSIGN(PokerPlayer);
    // 尝试出牌, 用于提示
    void tryOutputCard(std::vector<int32_t>& data, bool forSuggestTips);

    virtual void delayNotify(PLAYER_STATE state, int32_t card, float delayTime = 0.3f) override;
    virtual void sortCards() override;
    // 出牌
    virtual void cardOut() override;
    virtual void doCardOut(std::vector< int32_t >& data) override;
    // 有人胜利, 开始牌局结算
    virtual void over();
    // 不换人再来一局, 收回手头的牌
    void onceMore();
private:
    // 机器人先出牌的时候走这里
    std::vector<int32_t>& selectCard(bool forSuggestTips);
    // 机器人跟牌的逻辑走这里, cardsLastOut 是上家本轮出的牌
    std::vector<int32_t>& selectCard(uint8_t seat, std::vector< int32_t >& cardsLastOut, bool forSuggestTips);

private:
    std::vector<CARDS_DATA> theCardGroups;
};

